Python এবং Other Scripting Languages দিয়ে Hadoop Streaming

Big Data and Analytics - হাদুপ (Hadoop) - Hadoop Streaming এবং Pipes
375

Hadoop Streaming হাদুপের একটি গুরুত্বপূর্ণ ফিচার, যা ব্যবহারকারীদের MapReduce প্রোগ্রামিংয়ের জন্য বিভিন্ন প্রোগ্রামিং ভাষা (যেমন Python, Perl, Ruby, Shell script) ব্যবহার করার সুবিধা প্রদান করে। এটি হাদুপের Java ভিত্তিক প্রোগ্রামিং মডেল থেকে বেরিয়ে, প্রোগ্রামারদের অন্য ভাষায় প্রোগ্রাম লিখে হাদুপ ক্লাস্টারে প্রক্রিয়া চালানোর সুযোগ দেয়।

Hadoop Streaming এর মাধ্যমে ব্যবহারকারী সহজেই Map এবং Reduce ফাংশনকে স্ক্রিপ্ট বা অন্যান্য প্রোগ্রামিং ভাষায় লিখতে পারেন এবং সেই প্রোগ্রামগুলি হাদুপ ক্লাস্টারের মধ্যে চলমান ডেটার উপর প্রয়োগ করতে পারেন।


Hadoop Streaming কীভাবে কাজ করে?

Hadoop Streaming মূলত স্ট্যান্ডার্ড ইনপুট (stdin) এবং স্ট্যান্ডার্ড আউটপুট (stdout) এর মাধ্যমে ডেটা আদান-প্রদান করে। MapReduce ফেজের মধ্যে প্রোগ্রামগুলি একটি ইনপুট পদ্ধতিতে ডেটা গ্রহণ করে এবং আউটপুট স্ট্যান্ডার্ড আউটপুটে লিখে।

প্রক্রিয়া:

  1. Map Phase:
    • Map প্রোগ্রামটি ইনপুট হিসেবে একটি স্ট্রীম প্রাপ্ত করে এবং এটি কী-ভ্যালু পেয়ারে রূপান্তরিত করে আউটপুট হিসাবে পাঠায়।
  2. Shuffle and Sort:
    • Hadoop সিস্টেম ইনপুটে Map আউটপুটগুলোর কী-ভ্যালু পেয়ার গ্রুপ করে এবং সেগুলি Reduce প্রোগ্রামে পাঠায়।
  3. Reduce Phase:
    • Reduce প্রোগ্রামটি কী অনুযায়ী গ্রুপকৃত ডেটা গ্রহণ করে, এবং প্রক্রিয়া শেষে এটি ফলাফল আউটপুট হিসেবে স্ট্যান্ডার্ড আউটপুটে পাঠায়।

Hadoop Streaming এ সাধারণত প্রোগ্রামগুলিকে Map এবং Reduce স্ক্রিপ্ট বা এক্সিকিউটেবল ফাইল হিসেবে সরবরাহ করা হয়।


Hadoop Streaming এর সুবিধা

  • প্রোগ্রামিং ভাষা স্বাধীনতা:
    Hadoop Streaming ব্যবহারকারীদের যেকোনো প্রোগ্রামিং ভাষা ব্যবহার করে MapReduce প্রোগ্রাম তৈরি করার সুযোগ দেয়। এর মাধ্যমে Python, Perl, Ruby, Shell Script ইত্যাদি ভাষায় ডেটা প্রক্রিয়াকরণ করা সম্ভব।
  • সহজ ইন্টিগ্রেশন:
    ব্যবহারকারীরা সহজেই বিদ্যমান কোড বা স্ক্রিপ্ট ব্যবহার করে হাদুপ ক্লাস্টারে কার্যক্রম চালাতে পারেন, যা Java কোড লেখার সময়ের সাথে তুলনা করলে অনেক সময় সাশ্রয়ী।
  • পোর্টেবল:
    Hadoop Streaming সমর্থিত যে কোনো ভাষায় লেখা স্ক্রিপ্ট বা প্রোগ্রাম হাদুপ ক্লাস্টারে সহজে রান করা যায়, যা বিভিন্ন প্ল্যাটফর্মে পোর্টেবল (portable) বানায়।
  • Flexibility:
    Hadoop Streaming ব্যবহারকারীদের কাস্টম MapReduce টাস্কের জন্য অনেক বেশি নমনীয়তা (flexibility) দেয়।

Hadoop Streaming ব্যবহার করে MapReduce রান করার উদাহরণ

ধরা যাক, আমরা একটি Word Count প্রোগ্রাম তৈরি করতে চাই Python স্ক্রিপ্ট ব্যবহার করে। এই স্ক্রিপ্টটি হাদুপ ক্লাস্টারে চলে এবং ডেটা প্রসেস করে।

1. Python Map স্ক্রিপ্ট (map.py)

import sys
for line in sys.stdin:
    words = line.strip().split()
    for word in words:
        print(f"{word}\t1")

2. Python Reduce স্ক্রিপ্ট (reduce.py)

import sys
from collections import defaultdict

word_count = defaultdict(int)
for line in sys.stdin:
    word, count = line.strip().split("\t")
    word_count[word] += int(count)

for word, count in word_count.items():
    print(f"{word}\t{count}")

3. Hadoop Streaming কমান্ড

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
  -input /user/input_data \
  -output /user/output_data \
  -mapper map.py \
  -reducer reduce.py

এখানে:

  • input: ইনপুট ডেটাসেটের পথ।
  • output: আউটপুট ডেটাসেটের পথ।
  • mapper: Map স্ক্রিপ্টের পথ।
  • reducer: Reduce স্ক্রিপ্টের পথ।

Hadoop Streaming এর ব্যবহারিক ক্ষেত্র

Hadoop Streaming ব্যবহার করে বিভিন্ন ধরনের ডেটা বিশ্লেষণ করা যায়:

  1. Log File Analysis:
    সিস্টেম বা অ্যাপ্লিকেশন লগ ফাইল বিশ্লেষণ করতে Python বা Shell স্ক্রিপ্ট ব্যবহার করা যেতে পারে।
  2. Text Processing:
    বড় টেক্সট ডেটা প্রক্রিয়া করতে যেমন টেক্সট মাইনিং বা ভাষাগত বিশ্লেষণ (text mining or linguistic analysis)।
  3. Data Transformation:
    ডেটার বিভিন্ন রূপান্তর (transformation) যেমন ফিল্টারিং, ক্লিনিং বা গ্রুপিং স্ক্রিপ্ট ব্যবহার করে করা যেতে পারে।
  4. Machine Learning:
    হাদুপ ক্লাস্টারে MapReduce ভিত্তিক মেশিন লার্নিং মডেল চালানোর জন্য স্ক্রিপ্ট ব্যবহার করা যায়।

সারাংশ

Hadoop Streaming হাদুপ ক্লাস্টারে MapReduce কাজ চালানোর জন্য প্রোগ্রামারদের Python, Perl, Ruby বা Shell স্ক্রিপ্টের মতো অন্যান্য প্রোগ্রামিং ভাষা ব্যবহারের সুযোগ দেয়। এটি প্রোগ্রামিং ভাষা স্বাধীনতা, নমনীয়তা এবং সাচ্ছন্দ্য প্রদান করে, বিশেষ করে যখন Java ব্যবহারে কিছু সীমাবদ্ধতা থাকে। Hadoop Streaming ব্যবহার করে ডেটা প্রক্রিয়াকরণ দ্রুত, সহজ এবং বহুমুখীভাবে করা যায়।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...